package bgai.players;

import bgai.ai.minimax.Evaluator;
import bgai.gamelogic.Backgammon;
import bgai.gamelogic.CheckerColor;
import bgai.gamelogic.Move;

/**
 * Interfaccia di un generico giocatore, umano o artificiale che sia.
 */
public interface Player extends Evaluator {
	
	/**
	 * Restituisce true se questo e' un giocatore umano, false altrimenti
	 * @return vedi descrizione
	 */
	boolean isHuman();
	
	/**
	 * Restituisce il colore di questo player
	 * @return
	 */
	CheckerColor getColor();
	
	/**
	 * Cambia il colore di questo player
	 * @param color nuovo colore
	 */
	void setColor(CheckerColor color);
	
	/**
	 * Restituisce la miglior mossa
	 * @param bg
	 * @return
	 */
	Move bestMove(Backgammon bg);

}
